重要性采样

我尼玛,我现在要算一个服从p(x)分布的x关于f函数的均值,但是这PDF怎么这么尼玛复杂?根本找不到一个合适的cq(x)啊!接受概率简直低的离谱!真是太尼玛难以采样了!还有啥采样方法能用? 额,我看看...如果你不要采样...只是要算这个关于这个分布的函数的期望...也就是E(f(x))的话...也许你可以试试重要性采样,也就是我们可以试试直接跳过采样过程。

重要性采样是一种用于从复杂概率分布中计算的方法,尤其适用于那些难以直接采样的分布与接受拒绝采样类似,重要性采样利用一个容易采样的建议分布,但它更关注样本的加权,使得生成的样本更具代表性。

Pasted image 20240603155724.png

  • x来自于p分布
  • f(x)是关于x的函数,不是概率密度!

简单介绍

重要性采样通过引入一个容易采样的建议分布,将原本难以处理的复杂分布转化为简单分布上的加权问题。这种方法特别适用于计算期望值或积分,其中直接从目标分布采样非常困难。

适用场景

  • 要计算,同时x服从一个难以采样的p(x)(PDF已知)
  • 有一个容易采样的建议分布

基本原理

重要性采样的基本思想涉及两个分布:

  1. 目标分布 𝑝(𝑥) —— 我们希望从中生成样本的分布。
  2. 建议分布 𝑞(𝑥) —— 一个容易采样的分布。

此外,还涉及到加权过程,用以调整样本的代表性。

重要性采样的步骤如下:

  1. 从建议分布中抽取样本:从 𝑞(𝑥) 生成 𝑁 个样本 𝑥₁, 𝑥₂, ..., 𝑥ₙ。
    • 为什么不直接从p(x)抽取?因为不好抽!就算你知道它的pdf也不好抽!不然我们就直接用接受拒绝采样了!
  2. 计算权重:对每个样本 𝑥ᵢ 计算权重 𝑤ᵢ =
  3. 计算加权期望值:使用加权样本来估计期望值,例如

通过这些步骤,我们能够有效地利用简单的建议分布来处理复杂的目标分布。

示例

假设我们希望计算目标分布 𝑝(𝑥) 的某个函数 𝑓(𝑥) 的期望值,但直接从 𝑝(𝑥) 采样非常困难。我们可以选择一个容易采样的建议分布 𝑞(𝑥),然后按以下步骤进行重要性采样:

  1. 从建议分布 𝑞(𝑥) 中抽取 1000 个样本
  2. 计算每个样本的权重,如
  3. 计算加权期望值,如

这种方法不仅能有效地生成目标分布的样本,还能计算复杂分布的期望值,适用于许多机器学习和统计学问题。

总结

重要性采样通过利用一个简单的建议分布来加权处理复杂的目标分布,体现了“求均值,你不容易采样我就拐着法子把你算出来”的思想,说明我们通过奇妙的数学工具和思维变换,可以走出一条不一样的计算目标的道路,在直到更少信息的情况下直接把函数均值算出来。